ZGlmZiAtLWdpdCBhL2xpYl9pMzg2L2ljL3NjNTIwX2FzbS5TIGIvbGliX2kzODYvaWMvc2M1MjBfYXNtLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIxMTBjNAotLS0gL2Rldi9udWxsCisrKyBiL2xpYl9pMzg2L2ljL3NjNTIwX2FzbS5TCkBAIC0wLDAgKzEsNTMwIEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiA8ZGFuaWVsQG9taWNyb24uc2U+LgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKy8qIFRoaXMgZmlsZSBpcyBsYXJnZWx5IGJhc2VkIG9uIGNvZGUgb2J0bmVkIGZyb20gQU1ELiBBTUQncyBvcmlnaW5hbAorICogY29weXJpZ2h0IGlzIGluY2x1ZGVkIGJlbG93IAorICovCisKKy8qCisgKiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgKiAgIENvcHlyaWdodCAxOTk5IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAqICBUaGlzIHNvZnR3YXJlIGlzIHRoZSBwcm9wZXJ0eSBvZiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMgIChBTUQpICB3aGljaCAKKyAqICBzcGVjaWZpY2FsbHkgZ3JhbnRzIHRoZSB1c2VyIHRoZSByaWdodCB0byBtb2RpZnksIHVzZSBhbmQgZGlzdHJpYnV0ZSB0aGlzIAorICogIHNvZnR3YXJlIHByb3ZpZGVkIHRoaXMgQ09QWVJJR0hUIE5PVElDRSBpcyBub3QgcmVtb3ZlZCBvciBhbHRlcmVkLiAgQWxsIAorICogIG90aGVyIHJpZ2h0cyBhcmUgcmVzZXJ2ZWQgYnkgQU1ELiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAqICBUSEUgTUFURVJJQUxTIEFSRSBQUk9WSURFRCAiQVMgSVMiIFdJVEhPVVQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5UWSAKKyAqICBPRiBBTlkgS0lORCBJTkNMVURJTkcgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIE5PTklORlJJTkdFTUVOVCBPRiAKKyAqICBUSElSRC1QQVJUWSBJTlRFTExFQ1RVQUwgUFJPUEVSVFksIE9SIEZJVE5FU1MgRk9SIEFOWSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgKiAgSU4gTk8gRVZFTlQgU0hBTEwgQU1EIE9SIElUUyBTVVBQTElFUlMgQkUgTElBQkxFIEZPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSCisgKiAgKElOQ0xVRElORywgV0lUSE9VVCBMSU1JVEFUSU9OLCBEQU1BR0VTIEZPUiBMT1NTIE9GIFBST0ZJVFMsIEJVU0lORVNTCisgKiAgSU5URVJSVVBUSU9OLCBMT1NTIE9GIElORk9STUFJVE9OKSBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9GIE9SIElOQUJJTElUWQorICogIFRPIFVTRSBUSEUgTUFURVJJQUxTLCBFVkVOIElGIEFNRCBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogIFNVQ0ggREFNQUdFUy4gIEJFQ0FVU0UgU09NRSBKVVJTSURJQ1RJT05TIFBST0hJQklUIFRIRSBFWENMVVNJT04gT1IKKyAqICBMSU1JVEFUSU9OIE9GIExJQUJJTElUWSBGT1IgQ09OU0VRVUVOVElBTCBPUiBJTkNJREVOVEFMIERBTUFHRVMsIFRIRSBBQk9WRQorICogIExJTUlUQVRJT04gTUFZIE5PVCBBUFBMWSBUTyBZT1UuCisgKiAKKyAqICBBTUQgZG9lcyBub3QgYXNzdW1lIGFueSByZXNwb25zaWJpbGl0eSBmb3IgYW55IGVycm9ycyB0aGF0IG1heSBhcHBlYXIgaW4KKyAqICB0aGUgTWF0ZXJpYWxzIG5vciBhbnkgcmVzcG9uc2liaWxpdHkgdG8gc3VwcG9ydCBvciB1cGRhdGUgdGhlIE1hdGVyaWFscy4KKyAqICBBTUQgcmV0YWlucyB0aGUgcmlnaHQgdG8gbWFrZSBjaGFuZ2VzIHRvIGl0cyB0ZXN0IHNwZWNpZmljYXRpb25zIGF0IGFueQorICogIHRpbWUsIHdpdGhvdXQgbm90aWNlLgorICogCisgKiAgU28gdGhhdCBhbGwgbWF5IGJlbmVmaXQgZnJvbSB5b3VyIGV4cGVyaWVuY2UsIHBsZWFzZSByZXBvcnQgIGFueSAgcHJvYmxlbXMgCisgKiAgb3Igc3VnZ2VzdGlvbnMgYWJvdXQgdGhpcyBzb2Z0d2FyZSBiYWNrIHRvIEFNRC4gIFBsZWFzZSBpbmNsdWRlIHlvdXIgbmFtZSwgCisgKiAgY29tcGFueSwgIHRlbGVwaG9uZSBudW1iZXIsICBBTUQgcHJvZHVjdCByZXF1aXJpbmcgc3VwcG9ydCBhbmQgcXVlc3Rpb24gb3IgCisgKiAgcHJvYmxlbSBlbmNvdW50ZXJlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgKiAgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiAgICAgICAgIFdvcmxkd2lkZSBzdXBwb3J0IGFuZCBjb250YWN0ICAgICAgICAgICAKKyAqICBFbWJlZGRlZCBQcm9jZXNzb3IgRGl2aXNpb24gICAgICAgICAgICBpbmZvcm1hdGlvbiBhdmFpbGFibGUgYXQ6ICAgICAgICAgICAgICAgCisgKiAgU3lzdGVtcyBFbmdpbmVlcmluZyAgICAgICAgICAgICAgICAgICAgICAgZXBkLnN1cHBvcnRAYW1kLmNvbQorICogIDUyMDQgRS4gQmVuIFdoaXRlIEJsdmQuICAgICAgICAgICAgICAgICAgICAgICAgICAtb3ItCisgKiAgQXVzdGluLCBUWCA3ODc0MSAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFtZC5jb20vaHRtbC9zdXBwb3J0L3RlY2hzdXAuaHRtbAorICogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgkgQVVUSE9SICAgICAgOiBCdWRkeSBGZXkgLSBPcmlnaW5hbC4gCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgIEZVTkNUSU9OQUwgREVTQ1JJUFRJT046CisgKiBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIHRvIGF1dG9kZXRlY3QgdGhlIGdlb21ldHJ5IG9mIHRoZSBEUkFNLgorICoKKyAqIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgY29sdW1uIGJpdHMgZm9yIHRoZSBEUkFNCisgKiBkZXZpY2VzIGluIHRoaXMgZXh0ZXJuYWwgYmFuay4gVGhpcyByb3V0aW5lIGFzc3VtZXMgdGhhdCB0aGUgZXh0ZXJuYWwgYmFuaworICogaGFzIGJlZW4gY29uZmlndXJlZCBmb3IgYW4gMTEtYml0IGNvbHVtbiBhbmQgZm9yIDQgaW50ZXJuYWwgYmFua3MuIFRoaXMgZ2l2ZXMKKyAqIHVzIHRoZSBtYXhpbXVtIGFkZHJlc3MgcmVhY2ggaW4gbWVtb3J5LiBCeSB3cml0aW5nIGEgdGVzdCB2YWx1ZSB0byB0aGUgbWF4CisgKiBhZGRyZXNzIGFuZCBsb2NhdGluZyB3aGVyZSBpdCBhbGlhc2VzIHRvLCB3ZSBjYW4gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgdmFsaWQKKyAqIGNvbHVtbiBiaXRzLgorICoKKyAqIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgaW50ZXJuYWwgYmFua3MgZWFjaCBEUkFNCisgKiBkZXZpY2UgaGFzLiBUaGUgZXh0ZXJuYWwgYmFuayAodW5kZXIgdGVzdCkgaXMgY29uZmlndXJlZCBmb3IgbWF4aW11bSByZWFjaAorICogd2l0aCAxMS1iaXQgY29sdW1ucyBhbmQgNCBpbnRlcm5hbCBiYW5rcy4gVGhpcyByb3V0aW5lIHdpbGwgd3JpdGUgdG8gYSBtYXgKKyAqIGFkZHJlc3MgKEJBMSBhbmQgQkEwID0gMSkgYW5kIHRoZW4gcmVhZCBmcm9tIGFuIGFkZHJlc3Mgd2l0aCBCQTE9MCB0byBzZWUgaWYKKyAqIHRoYXQgY29sdW1uIGlzIGEgImRvbid0IGNhcmUiLiBJZiBCQTEgZG9lcyBub3QgYWZmZWN0IHdyaXRlL3JlYWQgb2YgZGF0YSwKKyAqIHRoZW4gdGhpcyBkZXZpY2UgaGFzIG9ubHkgMiBpbnRlcm5hbCBiYW5rcy4KKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIHRvIGRldGVybWluZSB0aGUgZW5kaW5nIGFkZHJlc3MgZm9yIHRoaXMgZXh0ZXJuYWwKKyAqIGJhbmsgb2YgU0RSQU0uIFdlIHdyaXRlIHRvIGEgbWF4IGFkZHJlc3Mgd2l0aCBhIGRhdGEgdmFsdWUgYW5kIHRoZW4gZGlzYWJsZQorICogcm93IGFkZHJlc3MgYml0cyBsb29raW5nIGZvciAiZG9uJ3QgY2FyZSIgbG9jYXRpb25zLiBFYWNoICJkb24ndCBjYXJlIiBiaXQKKyAqIHJlcHJlc2VudHMgYSBkaXZpZGluZyBvZiB0aGUgbWF4aW11bSBkZW5zaXR5ICgxMjhNKSBieSAyLiBCeSBkaXZpZGluZyB0aGUKKyAqIG1heGltdW0gb2YgMzIgNE0gY2h1bmtzIGluIGFuIGV4dGVybmFsIGJhbmsgZG93biBieSBhbGwgdGhlICJkb24ndCBjYXJlIiBiaXRzCisgKiBkZXRlcm1pbmVkIGR1cmluZyBzaXppbmcsIHdlIHNldCB0aGUgcHJvcGVyIGRlbnNpdHkuCisgKgorICogV0FSTklOR1MuCisgKiBicCBtdXN0IGJlIHByZXNlcnZlZCBiZWNhdXNlIGl0IGlzIHVzZWQgZm9yIHJldHVybiBsaW5rYWdlLgorICoKKyAqIEVYSVQKKyAqIG5vdGhpbmcgcmV0dXJuZWQgLSBidXQgdGhlIG1lbW9yeSBzdWJzeXN0ZW0gaXMgZW5hYmxlZAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisuc2VjdGlvbiAudGV4dAorLmVxdSAgICAgICAgICAgIERSQ0NUTCwgICAgIDB4MGZmZmVmMDEwICAgLyogRFJBTSBjb250cm9sIHJlZ2lzdGVyICovCisuZXF1ICAgICAgICAgICAgRFJDVE1DVEwsICAgMHgwZmZmZWYwMTIgICAvKiBEUkFNIHRpbWluZyBjb250cm9sIHJlZ2lzdGVyICovCisuZXF1ICAgICAgICAgICAgRFJDQ0ZHLCAgICAgMHgwZmZmZWYwMTQgICAvKiBEUkFNIGJhbmsgY29uZmlndXJhdGlvbiByZWdpc3RlciAqLworLmVxdSAgICAgICAgICAgIERSQ0JFTkRBRFIsIDB4MGZmZmVmMDE4ICAgLyogRFJBTSBiYW5rIGVuZGluZyBhZGRyZXNzIHJlZ2lzdGVyICovCisuZXF1ICAgICAgICAgICAgRUNDQ1RMLCAgICAgMHgwZmZmZWYwMjAgICAvKiBEUkFNIEVDQyBjb250cm9sIHJlZ2lzdGVyICovCisuZXF1ICAgICAgICAgICAgREJDVEwsICAgICAgMHgwZmZmZWYwNDAgICAvKiBEUkFNIGJ1ZmZlciBjb250cm9sIHJlZ2lzdGVyICovCisKKy5lcXUgICAgICAgICAgICBDQUNIRUxJTkVTWiwgMHgwMDAwMDAxMCAgIC8qIHNpemUgb2Ygb3VyIGNhY2hlIGxpbmUgKHJlYWQgYnVmZmVyKSAqLworLmVxdSAgICAgICAgICAgIENPTDExX0FEUiwgIDB4MGUwMDFlMDAgICAgLyogMTEgY29sIGFkZHJzICovCisuZXF1ICAgICAgICAgICAgQ09MMTBfQURSLCAgMHgwZTAwMGUwMCAgICAvKiAxMCBjb2wgYWRkcnMgKi8KKy5lcXUgICAgICAgICAgICBDT0wwOV9BRFIsICAweDBlMDAwNjAwICAgIC8qICA5IGNvbCBhZGRycyAqLworLmVxdSAgICAgICAgICAgIENPTDA4X0FEUiwgIDB4MGUwMDAyMDAgICAgLyogIDggY29sIGFkZHJzICovCisuZXF1ICAgICAgICAgICAgUk9XMTRfQURSLCAgMHgwZjAwMDAwMCAgICAvKiAxNCByb3cgYWRkcnMgKi8KKy5lcXUgICAgICAgICAgICBST1cxM19BRFIsICAweDA3MDAwMDAwICAgIC8qIDEzIHJvdyBhZGRycyAqLworLmVxdSAgICAgICAgICAgIFJPVzEyX0FEUiwgIDB4MDMwMDAwMDAgICAgLyogMTIgcm93IGFkZHJzICovCisuZXF1ICAgICAgICAgICAgUk9XMTFfQURSLCAgMHgwMTAwMDAwMCAgICAvKiAxMSByb3cgYWRkcnMvYWxzbyBiYW5rIHN3aXRjaCAqLworLmVxdSAgICAgICAgICAgIFJPVzEwX0FEUiwgIDB4MDAwMDAwMDAgICAgLyogMTAgcm93IGFkZHJzL2Fsc28gYmFuayBzd2l0Y2ggKi8KKy5lcXUgICAgICAgICAgICBDT0wxMV9EQVRBLCAweDBiMGIwYjBiICAgIC8qIDExIGNvbCBhZGRycyAqLworLmVxdSAgICAgICAgICAgIENPTDEwX0RBVEEsIDB4MGEwYTBhMGEgICAgLyogMTAgY29sIGRhdGEgKi8KKy5lcXUgICAgICAgICAgICBDT0wwOV9EQVRBLCAweDA5MDkwOTA5ICAgIC8qICA5IGNvbCBkYXRhICovCisuZXF1ICAgICAgICAgICAgQ09MMDhfREFUQSwgMHgwODA4MDgwOCAgICAvKiAgOCBjb2wgZGF0YSAqLworLmVxdSAgICAgICAgICAgIFJPVzE0X0RBVEEsIDB4M2YzZjNmM2YgICAgLyogMTQgcm93IGRhdGEgKE1BU0spICovCisuZXF1ICAgICAgICAgICAgUk9XMTNfREFUQSwgMHgxZjFmMWYxZiAgICAvKiAxMyByb3cgZGF0YSAoTUFTSykgKi8KKy5lcXUgICAgICAgICAgICBST1cxMl9EQVRBLCAweDBmMGYwZjBmICAgIC8qIDEyIHJvdyBkYXRhIChNQVNLKSAqLworLmVxdSAgICAgICAgICAgIFJPVzExX0RBVEEsIDB4MDcwNzA3MDcgICAgLyogMTEgcm93IGRhdGEvYWxzbyBiYW5rIHN3aXRjaCAoTUFTSykgKi8KKy5lcXUgICAgICAgICAgICBST1cxMF9EQVRBLCAweGFhYWFhYWFhICAgIC8qIDEwIHJvdyBkYXRhL2Fsc28gYmFuayBzd2l0Y2ggKE1BU0spICovCisKKworIC8qCisgICogaW5pdGlhbGl6ZSBkcmFtIGNvbnRyb2xsZXIgcmVnaXN0ZXJzCisgICovCisuZ2xvYmwgbWVtX2luaXQKK21lbV9pbml0OiAKKyAgICAgICAgeG9ydyAgICAlYXgsJWF4CisgICAgICAgIG1vdmwgICAgJERCQ1RMLCAlZWRpICAgICAgICAgICAgIAorZnMJbW92YiAgICAgJWFsLCAoJWVkaSkgICAgICAgICAgICAgLyogZGlzYWJsZSB3cml0ZSBidWZmZXIgKi8KKworICAgICAgICBtb3ZsICAgICRFQ0NDVEwsICVlZGkgICAgICAgICAgICAKK2ZzCW1vdmIgICAgICVhbCwgKCVlZGkpICAgICAgICAgICAgIC8qIGRpc2FibGUgRUNDICovCisKKyAgICAgICAgbW92bCAgICAkRFJDVE1DVEwsICVlZGkgICAgICAgICAgIAorICAgICAgICBtb3ZiICAgICQweDFFLCVhbCAgICAgICAgICAgICAgICAvKiBTZXQgU0RSQU0gdGltaW5nIGZvciBzbG93ZXN0ICovCitmcwltb3ZiICAgICAlYWwsICglZWRpKQorCisgLyoKKyAgKiBzZXR1cCBsb29wIHRvIGRvIDQgZXh0ZXJuYWwgYmFua3Mgc3RhcnRpbmcgd2l0aCBiYW5rIDMKKyAgKi8KKyAgICAgICAgbW92bCAgICAkMHhmZjAwMDAwMCwlZWF4ICAgICAgICAgLyogZW5hYmxlIGxhc3QgYmFuayBhbmQgc2V0dXAgKi8KKyAgICAgICAgbW92bCAgICAkRFJDQkVOREFEUiwgJWVkaSAgICAgICAgLyogZW5kaW5nIGFkZHJlc3MgcmVnaXN0ZXIgKi8KK2ZzCW1vdmwgICAgICVlYXgsICglZWRpKQorCisgICAgICAgIG1vdmwgICAgJERSQ0NGRywgJWVkaSAgICAgICAgICAgIC8qIHNldHVwICovCisgICAgICAgIG1vdncgICAgJDB4YmJiYiwlYXggICAgICAgICAgICAgIC8qIGRyYW0gY29uZmlnIHJlZ2lzdGVyIGZvciAgKi8KK2ZzCW1vdncgICAgJWF4LCAoJWVkaSkKKworIC8qCisgICogaXNzdWUgYSBOT1AgdG8gYWxsIERSQU1zCisgICovCisgICAgICAgIG1vdmwgICAgJERSQ0NUTCwgJWVkaSAgICAgICAgICAgIC8qIHNldHVwIERSQU0gY29udHJvbCByZWdpc3RlciB3aXRoICovCisgICAgICAgIG1vdmIgICAgJDB4MSwlYWwgICAgICAgICAgICAgICAgIC8qIERpc2FibGUgcmVmcmVzaCxkaXNhYmxlIHdyaXRlIGJ1ZmZlciAqLyAKK2ZzCW1vdmIgICAgICVhbCwgKCVlZGkpCisgICAgICAgIG1vdmwgICAgJENBQ0hFTElORVNaLCAlZXNpICAgICAgIC8qIGp1c3QgYSBkdW1teSBhZGRyZXNzIHRvIHdyaXRlIGZvciAqLyAKK2ZzCW1vdncgICAgICVheCwgKCVlc2kpCisgLyoKKyAgKiBkZWxheSBmb3IgMTAwIHVzZWM/IDIwMD8KKyAgKiAqKioqKip0aGlzIGlzIGEgY2x1ZGdlIGZvciBub3cgKioqKioqKioqKioqKgorICAqLworICAgICAgICBtb3Z3ICAgICQxMDAsJWN4CitzaXpkZWxheTogCisgICAgICAgIGxvb3AgICAgc2l6ZGVsYXkgICAgICAgICAgICAgICAgIC8qIHdlIG5lZWQgMTAwIHVzZWMgaGVyZSAqLworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworIC8qCisgICogaXNzdWUgYWxsIGJhbmtzIHByZWNoYXJnZQorICAqLworICAgICAgICBtb3ZiICAgICQweDIsJWFsICAgICAgICAgICAgICAgICAvKiBBbGwgYmFua3MgcHJlY2hhcmdlICovCitmcwltb3ZiICAgICAlYWwsICglZWRpKQorZnMJbW92dyAgICAgJWF4LCAoJWVzaSkKKworIC8qCisgICogaXNzdWUgMiBhdXRvIHJlZnJlc2hlcyB0byBhbGwgYmFua3MgCisgICovCisgICAgICAgIG1vdmIgICAgJDB4NCwlYWwgICAgICAgICAgICAgICAgIC8qIEF1dG8gcmVmcmVzaCBjbWQgKi8KK2ZzCW1vdmIgICAgICVhbCwgKCVlZGkpCisgICAgICAgIG1vdncgICAgJDIsJWN4CityZWZyZXNoMTogCitmcwltb3Z3ICAgICAlYXgsICglZXNpKQorICAgICAgICBsb29wICAgIHJlZnJlc2gxCisKKyAvKgorICAqIGlzc3VlIExPQUQgTU9ERSBSRUdJU1RFUiBjb21tYW5kCisgICovCisgICAgICAgIG1vdmIgICAgJDB4MywlYWwgICAgICAgICAgICAgICAgIC8qIExvYWQgbW9kZSByZWdpc3RlciBjbWQgKi8KK2ZzCW1vdmIgICAgICVhbCwgKCVlZGkpCitmcwltb3Z3ICAgICAlYXgsICglZXNpKQorCisgLyoKKyAgKiBpc3N1ZSA4IG1vcmUgYXV0byByZWZyZXNoZXMgdG8gYWxsIGJhbmtzIAorICAqLyAKKyAgICAgICAgbW92YiAgICAkMHg0LCVhbCAgICAgICAgICAgICAgICAgLyogQXV0byByZWZyZXNoIGNtZCAqLworZnMJbW92YiAgICAgJWFsLCAoJWVkaSkKKyAgICAgICAgbW92dyAgICAkOCwlY3gKK3JlZnJlc2gyOiAKK2ZzCW1vdncgICAgICVheCwgKCVlc2kpCisgICAgICAgIGxvb3AgICAgcmVmcmVzaDIKKworIC8qCisgICogc2V0IGNvbnRyb2wgcmVnaXN0ZXIgdG8gTk9STUFMIG1vZGUgCisgICovCisgICAgICAgIG1vdmIgICAgJDB4MCwlYWwgICAgICAgICAgICAgICAgIC8qIE5vcm1hbCBtb2RlIHZhbHVlICovCitmcwltb3ZiICAgICAlYWwsICglZWRpKQorCisgLyoKKyAgKiBzaXplIGRyYW0gc3RhcnRpbmcgd2l0aCBleHRlcm5hbCBiYW5rIDMgbW92aW5nIHRvIGV4dGVybmFsIGJhbmsgMAorICAqLworICAgICAgICBtb3ZsICAgICQweDMsJWVjeCAgICAgICAgICAgICAgICAvKiBzdGFydCB3aXRoIGV4dGVybmFsIGJhbmsgMyAqLworCituZXh0YmFuazogCisKKyAvKgorICAqIHdyaXRlIGNvbCAxMSB3cmFwIGFkcgorICAqLworICAgICAgICBtb3ZsICAgICRDT0wxMV9BRFIsICVlc2kgICAgICAgICAvKiBzZXQgYWRkcmVzcyB0byBtYXggY29sICgxMSkgd3JhcCBhZGRyICovCisgICAgICAgIG1vdmwgICAgJENPTDExX0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIG1heCBzdXBwb3J0ZWQgY29sdW1ucygxMSkgKi8KK2ZzICAgICAgbW92bCAgICAlZWF4LCAoJWVzaSkgICAgICAgICAgICAgLyogd3JpdGUgbWF4IGNvbCBwYXR0ZXJuIGF0IG1heCBjb2wgYWRyICovCitmcyAgICAgIG1vdmwgICAgKCVlc2kpLCAlZWJ4ICAgICAgICAgICAgIC8qIG9wdGlvbmFsIHJlYWQgKi8KKyAgICAgICAgY21wbCAgICAlZWJ4LCVlYXggICAgICAgICAgICAgICAgLyogdG8gdmVyaWZ5IHdyaXRlICovCisgICAgICAgIGpueiAgICAgYmFkX3JhbSAgICAgICAgICAgICAgICAgIC8qIHRoaXMgcmFtIGlzIGJhZCAqLworIC8qCisgICogd3JpdGUgY29sIDEwIHdyYXAgYWRyCisgICovCisKKyAgICAgICAgbW92bCAgICAkQ09MMTBfQURSLCAlZXNpICAgICAgICAgLyogc2V0IGFkZHJlc3MgdG8gMTAgY29sIHdyYXAgYWRkcmVzcyAqLworICAgICAgICBtb3ZsICAgICRDT0wxMF9EQVRBLCAlZWF4ICAgICAgICAvKiBwYXR0ZXJuIGZvciAxMCBjb2wgd3JhcCAqLworZnMgICAgICBtb3ZsICAgICVlYXgsICglZXNpKSAgICAgICAgICAgICAvKiB3cml0ZSAxMCBjb2wgcGF0dGVybiBAIDEwIGNvbCB3cmFwIGFkciAqLworZnMgICAgICBtb3ZsICAgICglZXNpKSwgJWVieCAgICAgICAgICAgICAvKiBvcHRpb25hbCByZWFkICovCisgICAgICAgIGNtcGwgICAgJWVieCwlZWF4ICAgICAgICAgICAgICAgIC8qIHRvIHZlcmlmeSB3cml0ZSAqLworICAgICAgICBqbnogICAgIGJhZF9yYW0gICAgICAgICAgICAgICAgICAvKiB0aGlzIHJhbSBpcyBiYWQgKi8KKyAvKgorICAqIHdyaXRlIGNvbCA5IHdyYXAgYWRyCisgICovCisgICAgICAgIG1vdmwgICAgJENPTDA5X0FEUiwgJWVzaSAgICAgICAgIC8qIHNldCBhZGRyZXNzIHRvIDkgY29sIHdyYXAgYWRkcmVzcyAqLworICAgICAgICBtb3ZsICAgICRDT0wwOV9EQVRBLCAlZWF4ICAgICAgICAvKiBwYXR0ZXJuIGZvciA5IGNvbCB3cmFwICovCitmcyAgICAgIG1vdmwgICAgJWVheCwgKCVlc2kpICAgICAgICAgICAgIC8qIHdyaXRlIDkgY29sIHBhdHRlcm4gQCA5IGNvbCB3cmFwIGFkciAqLworZnMgICAgICBtb3ZsICAgICglZXNpKSwgJWVieCAgICAgICAgICAgICAvKiBvcHRpb25hbCByZWFkICovCisgICAgICAgIGNtcGwgICAgJWVieCwlZWF4ICAgICAgICAgICAgICAgIC8qIHRvIHZlcmlmeSB3cml0ZSAqLworICAgICAgICBqbnogICAgIGJhZF9yYW0gICAgICAgICAgICAgICAgICAvKiB0aGlzIHJhbSBpcyBiYWQgKi8KKyAvKgorICAqIHdyaXRlIGNvbCA4IHdyYXAgYWRyCisgICovCisgICAgICAgIG1vdmwgICAgJENPTDA4X0FEUiwgJWVzaSAgICAgICAgIC8qIHNldCBhZGRyZXNzIHRvIG1pbig4KSBjb2wgd3JhcCBhZGRyZXNzICovCisgICAgICAgIG1vdmwgICAgJENPTDA4X0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIG1pbiAoOCkgY29sIHdyYXAgKi8KK2ZzICAgICAgbW92bCAgICAlZWF4LCAoJWVzaSkgICAgICAgICAgICAgLyogd3JpdGUgbWluIGNvbCBwYXR0ZXJuIEAgbWluIGNvbCBhZHIgKi8KK2ZzICAgICAgbW92bCAgICAoJWVzaSksICVlYnggICAgICAgICAgICAgLyogb3B0aW9uYWwgcmVhZCAqLworICAgICAgICBjbXBsICAgICVlYngsJWVheCAgICAgICAgICAgICAgICAvKiB0byB2ZXJpZnkgd3JpdGUgKi8KKyAgICAgICAgam56ICAgICBiYWRfcmFtICAgICAgICAgICAgICAgICAgLyogdGhpcyByYW0gaXMgYmFkICovCisgLyoKKyAgKiB3cml0ZSByb3cgMTQgd3JhcCBhZHIKKyAgKi8KKyAgICAgICAgbW92bCAgICAkUk9XMTRfQURSLCAlZXNpICAgICAgICAgLyogc2V0IGFkZHJlc3MgdG8gbWF4IHJvdyAoMTQpIHdyYXAgYWRkciAqLworICAgICAgICBtb3ZsICAgICRST1cxNF9EQVRBLCAlZWF4ICAgICAgICAvKiBwYXR0ZXJuIGZvciBtYXggc3VwcG9ydGVkIHJvd3MoMTQpICovCitmcyAgICAgIG1vdmwgICAgJWVheCwgKCVlc2kpICAgICAgICAgICAgIC8qIHdyaXRlIG1heCByb3cgcGF0dGVybiBhdCBtYXggcm93IGFkciAqLworZnMgICAgICBtb3ZsICAgICglZXNpKSwgJWVieCAgICAgICAgICAgICAvKiBvcHRpb25hbCByZWFkICovCisgICAgICAgIGNtcGwgICAgJWVieCwlZWF4ICAgICAgICAgICAgICAgIC8qIHRvIHZlcmlmeSB3cml0ZSAqLworICAgICAgICBqbnogICAgIGJhZF9yYW0gICAgICAgICAgICAgICAgICAvKiB0aGlzIHJhbSBpcyBiYWQgKi8KKyAvKgorICAqIHdyaXRlIHJvdyAxMyB3cmFwIGFkcgorICAqLworICAgICAgICBtb3ZsICAgICRST1cxM19BRFIsICVlc2kgICAgICAgICAvKiBzZXQgYWRkcmVzcyB0byAxMyByb3cgd3JhcCBhZGRyZXNzICovCisgICAgICAgIG1vdmwgICAgJFJPVzEzX0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIDEzIHJvdyB3cmFwICovCitmcyAgICAgIG1vdmwgICAgJWVheCwgKCVlc2kpICAgICAgICAgICAgIC8qIHdyaXRlIDEzIHJvdyBwYXR0ZXJuIEAgMTMgcm93IHdyYXAgYWRyICovCitmcyAgICAgIG1vdmwgICAgKCVlc2kpLCAlZWJ4ICAgICAgICAgICAgIC8qIG9wdGlvbmFsIHJlYWQgKi8KKyAgICAgICAgY21wbCAgICAlZWJ4LCVlYXggICAgICAgICAgICAgICAgLyogdG8gdmVyaWZ5IHdyaXRlICovCisgICAgICAgIGpueiAgICAgYmFkX3JhbSAgICAgICAgICAgICAgICAgIC8qIHRoaXMgcmFtIGlzIGJhZCAqLworIC8qCisgICogd3JpdGUgcm93IDEyIHdyYXAgYWRyCisgICovCisgICAgICAgIG1vdmwgICAgJFJPVzEyX0FEUiwgJWVzaSAgICAgICAgIC8qIHNldCBhZGRyZXNzIHRvIDEyIHJvdyB3cmFwIGFkZHJlc3MgKi8KKyAgICAgICAgbW92bCAgICAkUk9XMTJfREFUQSwgJWVheCAgICAgICAgLyogcGF0dGVybiBmb3IgMTIgcm93IHdyYXAgKi8KK2ZzICAgICAgbW92bCAgICAlZWF4LCAoJWVzaSkgICAgICAgICAgICAgLyogd3JpdGUgMTIgcm93IHBhdHRlcm4gQCAxMiByb3cgd3JhcCBhZHIgKi8KK2ZzICAgICAgbW92bCAgICAoJWVzaSksICVlYnggICAgICAgICAgICAgLyogb3B0aW9uYWwgcmVhZCAqLworICAgICAgICBjbXBsICAgICVlYngsJWVheCAgICAgICAgICAgICAgICAvKiB0byB2ZXJpZnkgd3JpdGUgKi8KKyAgICAgICAgam56ICAgICBiYWRfcmFtICAgICAgICAgICAgICAgICAgLyogdGhpcyByYW0gaXMgYmFkICovCisgLyoKKyAgKiB3cml0ZSByb3cgMTEgd3JhcCBhZHIKKyAgKi8KKyAgICAgICAgbW92bCAgICAkUk9XMTFfQURSLCAlZWRpICAgICAgICAgLyogc2V0IGFkZHJlc3MgdG8gMTEgcm93IHdyYXAgYWRkcmVzcyAqLworICAgICAgICBtb3ZsICAgICRST1cxMV9EQVRBLCAlZWF4ICAgICAgICAvKiBwYXR0ZXJuIGZvciAxMSByb3cgd3JhcCAqLworZnMgICAgICBtb3ZsICAgICVlYXgsICglZWRpKSAgICAgICAgICAgICAvKiB3cml0ZSAxMSByb3cgcGF0dGVybiBAIDExIHJvdyB3cmFwIGFkciAqLworZnMgICAgICBtb3ZsICAgICglZWRpKSwgJWVieCAgICAgICAgICAgICAvKiBvcHRpb25hbCByZWFkICovCisgICAgICAgIGNtcGwgICAgJWVieCwlZWF4ICAgICAgICAgICAgICAgIC8qIHRvIHZlcmlmeSB3cml0ZSAqLworICAgICAgICBqbnogICAgIGJhZF9yYW0gICAgICAgICAgICAgICAgICAvKiB0aGlzIHJhbSBpcyBiYWQgKi8KKyAvKgorICAqIHdyaXRlIHJvdyAxMCB3cmFwIGFkciAtLS0gdGhpcyB3cml0ZSBpcyByZWFsbHkgdG8gZGV0ZXJtaW5lIG51bWJlciBvZiBiYW5rcworICAqLworICAgICAgICBtb3ZsICAgICRST1cxMF9BRFIsICVlZGkgICAgICAgICAvKiBzZXQgYWRkcmVzcyB0byAxMCByb3cgd3JhcCBhZGRyZXNzICovCisgICAgICAgIG1vdmwgICAgJFJPVzEwX0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIDEwIHJvdyB3cmFwIChBQSkgKi8KK2ZzICAgICAgbW92bCAgICAlZWF4LCAoJWVkaSkgICAgICAgICAgICAgLyogd3JpdGUgMTAgcm93IHBhdHRlcm4gQCAxMCByb3cgd3JhcCBhZHIgKi8KK2ZzICAgICAgbW92bCAgICAoJWVkaSksICVlYnggICAgICAgICAgICAgLyogb3B0aW9uYWwgcmVhZCAqLworICAgICAgICBjbXBsICAgICVlYngsJWVheCAgICAgICAgICAgICAgICAvKiB0byB2ZXJpZnkgd3JpdGUgKi8KKyAgICAgICAgam56ICAgICBiYWRfcmFtICAgICAgICAgICAgICAgICAgLyogdGhpcyByYW0gaXMgYmFkICovCisgLyoKKyAgKiByZWFkIGRhdGEgQCByb3cgMTIgd3JhcCBhZHIgdG8gZGV0ZXJtaW5lICAqIGJhbmtzLCAKKyAgKiBhbmQgcmVhZCBkYXRhIEAgcm93IDE0IHdyYXAgYWRyIHRvIGRldGVybWluZSAgKiByb3dzLgorICAqIGlmIGRhdGEgQCByb3cgMTIgd3JhcCBhZHIgaXMgbm90IEFBLCAxMSBvciAxMiB3ZSBoYXZlIGJhZCBSQU0uCisgICogaWYgZGF0YSBAIHJvdyAxMiB3cmFwID09IEFBLCB3ZSBvbmx5IGhhdmUgMiBiYW5rcywgTk9UIDQgCisgICogaWYgZGF0YSBAIHJvdyAxMiB3cmFwID09IDExIG9yIDEyLCB3ZSBoYXZlIDQgYmFua3MsCisgICovCisgICAgICAgIHhvcncgICAgJWRpLCVkaSAgICAgICAgICAgICAgICAgIC8qIHZhbHVlIGZvciAyIGJhbmtzIGluIERJICovCitmcyAgICAgIG1vdmwgICAgKCVlc2kpLCAlZWJ4ICAgICAgICAgICAgIC8qIHJlYWQgZnJvbSAxMiByb3cgd3JhcCB0byBjaGVjayBiYW5rcyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogKGVzaSBpcyBzZXR1cCBmcm9tIHRoZSB3cml0ZSB0byByb3cgMTIgd3JhcCkgKi8KKyAgICAgICAgY21wbCAgICAlZWJ4LCVlYXggICAgICAgICAgICAgICAgLyogY2hlY2sgZm9yIEFBIHBhdHRlcm4gIChlYXggaG9sZHMgdGhlIGFhIHBhdHRlcm4pICovCisgICAgICAgIGp6ICAgICAgb25seTIgICAgICAgICAgICAgICAgICAgIC8qIGlmIHBhdHRlcm4gPT0gQUEsIHdlIG9ubHkgaGF2ZSAyIGJhbmtzICovCisKKwkvKiA0IGJhbmtzICovCisJCisgICAgICAgIG1vdncgICAgJDgsJWRpICAgICAgICAgICAgICAgICAgIC8qIHZhbHVlIGZvciA0IGJhbmtzIGluIERJIChCTktfQ05UIGJpdCkgKi8KKyAgICAgICAgY21wbCAgICAkUk9XMTFfREFUQSwgJWVieCAgICAgICAgLyogb25seSBvdGhlciBsZWdpdGltYXRlIHZhbHVlcyBhcmUgMTEgKi8KKyAgICAgICAganogICAgICBvbmx5MgorICAgICAgICBjbXBsICAgICRST1cxMl9EQVRBLCAlZWJ4ICAgICAgICAvKiBhbmQgMTIgKi8KKyAgICAgICAgam56ICAgICBiYWRfcmFtICAgICAgICAgICAgICAgICAgLyogaXRzIGJhZCBpZiBub3QgMTEgb3IgMTIhICovCisJCisJLyogZmFsbCB0aHJvdWdoICovCitvbmx5MjogCisgLyoKKyAgKiB2YWxpZGF0ZSByb3cgbWFzaworICAqLworICAgICAgICBtb3ZsICAgICRST1cxNF9BRFIsICVlc2kgICAgICAgICAvKiBzZXQgYWRkcmVzcyBiYWNrIHRvIG1heCByb3cgd3JhcCBhZGRyICovCitmcyAgICAgIG1vdmwgICAgKCVlc2kpLCAlZWF4ICAgICAgICAgICAgIC8qIHJlYWQgYWN0dWFsIG51bWJlciBvZiByb3dzIEAgcm93MTQgYWRyICovCisKKyAgICAgICAgY21wbCAgICAkUk9XMTFfREFUQSwgJWVheCAgICAgICAgLyogcm93IG11c3QgYmUgZ3JlYXRlciB0aGFuIDExIHBhdHRlcm4gKi8KKyAgICAgICAgamIgICAgICBiYWRfcmFtCisKKyAgICAgICAgY21wbCAgICAkUk9XMTRfREFUQSwgJWVheCAgICAgICAgLyogYW5kIHJvdyBtdXN0IGJlIGxlc3MgdGhhbiAxNCBwYXR0ZXJuICovCisgICAgICAgIGphICAgICAgYmFkX3JhbQorCisgICAgICAgIGNtcGIgICAgJWFoLCVhbCAgICAgICAgICAgICAgICAgIC8qIHZlcmlmeSBhbGwgNCBieXRlcyBvZiBkd29yZCBzYW1lICovCisgICAgICAgIGpueiAgICAgYmFkX3JhbQorICAgICAgICBtb3ZsICAgICVlYXgsJWVieAorICAgICAgICBzaHJsICAgICQxNiwlZWJ4CisgICAgICAgIGNtcHcgICAgJWJ4LCVheAorICAgICAgICBqbnogICAgIGJhZF9yYW0KKyAvKgorICAqIHJlYWQgY29sIDExIHdyYXAgYWRyIGZvciByZWFsIGNvbHVtbiBkYXRhIHZhbHVlCisgICovCisgICAgICAgIG1vdmwgICAgJENPTDExX0FEUiwgJWVzaSAgICAgICAgIC8qIHNldCBhZGRyZXNzIHRvIG1heCBjb2wgKDExKSB3cmFwIGFkZHIgKi8KK2ZzICAgICAgbW92bCAgICAoJWVzaSksICVlYXggICAgICAgICAgICAgLyogcmVhZCByZWFsIGNvbCBudW1iZXIgYXQgbWF4IGNvbCBhZHIgKi8KKyAvKgorICAqIHZhbGlkYXRlIGNvbHVtbiBkYXRhCisgICovCisgICAgICAgIGNtcGwgICAgJENPTDA4X0RBVEEsICVlYXggICAgICAgIC8qIGNvbCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiA4IHBhdHRlcm4gKi8KKyAgICAgICAgamIgICAgICBiYWRfcmFtCisKKyAgICAgICAgY21wbCAgICAkQ09MMTFfREFUQSwgJWVheCAgICAgICAgLyogYW5kIHJvdyBtdXN0IGJlIGxlc3MgdGhhbiAxMSBwYXR0ZXJuICovCisgICAgICAgIGphICAgICAgYmFkX3JhbQorCisgICAgICAgIHN1YmwgICAgJENPTDA4X0RBVEEsICVlYXggICAgICAgIC8qIG5vcm1hbGl6ZSBjb2x1bW4gZGF0YSB0byB6ZXJvICovCisgICAgICAgIGpjICAgICAgYmFkX3JhbQorICAgICAgICBjbXBiICAgICVhaCwlYWwgICAgICAgICAgICAgICAgICAvKiB2ZXJpZnkgYWxsIDQgYnl0ZXMgb2YgZHdvcmQgZXF1YWwgKi8KKyAgICAgICAgam56ICAgICBiYWRfcmFtCisgICAgICAgIG1vdmwgICAgJWVheCwlZWR4CisgICAgICAgIHNocmwgICAgJDE2LCVlZHgKKyAgICAgICAgY21wdyAgICAlZHgsJWF4CisgICAgICAgIGpueiAgICAgYmFkX3JhbQorIC8qCisgICogbWVyZ2UgYmFuayBhbmQgY29sIGRhdGEgdG9nZXRoZXIKKyAgKi8KKyAgICAgICAgYWRkdyAgICAlZGksJWR4ICAgICAgICAgICAgICAgICAgLyogbWVyZ2Ugb2YgYmFuayBhbmQgY29sIGluZm8gaW4gZGwgKi8KKyAvKgorICAqIGZpeCBlbmRpbmcgYWRkciBtYXNrIGJhc2VkIHVwb24gY29sIGluZm8KKyAgKi8KKyAgICAgICAgbW92YiAgICAkMywlYWwKKyAgICAgICAgc3ViYiAgICAlZGgsJWFsICAgICAgICAgICAgICAgICAgLyogZGggY29udGFpbnMgdGhlIG92ZXJmbG93IGZyb20gdGhlIGJhbmsvY29sIG1lcmdlICAqLworICAgICAgICBtb3ZiICAgICVibCwlZGggICAgICAgICAgICAgICAgICAvKiBibCBjb250YWlucyB0aGUgcm93IG1hc2sgKGFhLCAwNywgMGYsIDFmIG9yIDNmKSAqLworICAgICAgICB4Y2hndyAgICVjeCwlYXggICAgICAgICAgICAgICAgICAvKiBjeCA9IGF4ID0gMyBvciAyIGRlcGVuZGluZyBvbiAyIG9yIDQgYmFuayBkZXZpY2UgKi8KKyAgICAgICAgc2hyYiAgICAlY2wsJWRoCSAgICAgICAgICAgICAgICAgLyogICovCisgICAgICAgIGluY2IgICAgJWRoICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZGluZyBhZGRyIGlzIDEgZ3JlYXRlciB0aGFuIHJlYWwgZW5kICovCisgICAgICAgIHhjaGd3ICAgJWN4LCVheCAgICAgICAgICAgICAgICAgIC8qIGN4IGlzIGJhbmsgbnVtYmVyIGFnYWluICovCisgLyoKKyAgKiBpc3N1ZSBhbGwgYmFua3MgcHJlY2hhcmdlCisgICovCitiYWRfcmVpbnQ6IAorICAgICAgICBtb3ZsICAgICREUkNDVEwsICVlc2kgICAgICAgICAgICAvKiBzZXR1cCBEUkFNIGNvbnRyb2wgcmVnaXN0ZXIgd2l0aCAqLworICAgICAgICBtb3ZiICAgICQweDIsJWFsICAgICAgICAgICAgICAgICAvKiBBbGwgYmFua3MgcHJlY2hhcmdlICovCitmcwltb3ZiICAgICAlYWwsICglZXNpKQorICAgICAgICBtb3ZsICAgICRDQUNIRUxJTkVTWiwgJWVzaSAgICAgICAvKiBhZGRyZXNzIHRvIGluaXQgcmVhZCBidWZmZXIgKi8KK2ZzCW1vdncgICAgICVheCwgKCVlc2kpCisKKyAvKgorICAqIHVwZGF0ZSBFTkRJTkcgQUREUkVTUyBSRUdJU1RFUgorICAqLworICAgICAgICBtb3ZsICAgICREUkNCRU5EQURSLCAlZWRpICAgICAgICAvKiBEUkFNIGVuZGluZyBhZGRyZXNzIHJlZ2lzdGVyICovCisgICAgICAgIG1vdmwgICAgJWVjeCwlZWJ4CisJYWRkbAklZWJ4LCAlZWRpCitmcwltb3ZiICAgICVkaCwgKCVlZGkpCisgLyoKKyAgKiB1cGRhdGUgQ09ORklHIFJFR0lTVEVSCisgICovCisgICAgICAgIHhvcmIgICAgJWRoLCVkaAorICAgICAgICBtb3Z3ICAgICQweDAwZiwlYngKKyAgICAgICAgbW92dyAgICAlY3gsJWF4CisgICAgICAgIHNobHcgICAgJDIsJWF4CisgICAgICAgIHhjaGd3ICAgJWN4LCVheAorICAgICAgICBzaGx3ICAgICVjbCwlZHgKKyAgICAgICAgc2hsdyAgICAlY2wsJWJ4CisgICAgICAgIG5vdHcgICAgJWJ4CisgICAgICAgIHhjaGd3ICAgJWN4LCVheAorICAgICAgICBtb3ZsICAgICREUkNDRkcsICVlZGkKK2ZzCW1vdiAgICAgKCVlZGkpLCAlYXgKKyAgICAgICAgYW5kdyAgICAlYngsJWF4CisgICAgICAgIG9ydyAgICAgJWR4LCVheAorZnMgICAgICBtb3Z3ICAgICVheCwgKCVlZGkpCisgICAgICAgIGpjeHogICAgY2xlYW51cAorCisgICAgICAgIGRlY3cgICAgJWN4CisgICAgICAgIG1vdmwgICAgJWVjeCwlZWJ4CisgICAgICAgIG1vdmwgICAgJERSQ0JFTkRBRFIsICVlZGkgICAgICAgIC8qIERSQU0gZW5kaW5nIGFkZHJlc3MgcmVnaXN0ZXIgKi8KKyAgICAgICAgbW92YiAgICAkMHhmZiwlYWwKKwlhZGRsCSVlYngsICVlZGkKK2ZzCW1vdmIgICAgJWFsLCAoJWVkaSkKKyAvKgorICAqIHNldCBjb250cm9sIHJlZ2lzdGVyIHRvIE5PUk1BTCBtb2RlIAorICAqLworICAgICAgICBtb3ZsICAgICREUkNDVEwsICVlc2kgICAgICAgICAgICAvKiBzZXR1cCBEUkFNIGNvbnRyb2wgcmVnaXN0ZXIgd2l0aCAqLworICAgICAgICBtb3ZiICAgICQweDAsJWFsICAgICAgICAgICAgICAgICAvKiBOb3JtYWwgbW9kZSB2YWx1ZSAqLworZnMJbW92YiAgICAlYWwsICglZXNpKQorICAgICAgICBtb3ZsICAgICRDQUNIRUxJTkVTWiwgJWVzaSAgICAgICAvKiBhZGRyZXNzIHRvIGluaXQgcmVhZCBidWZmZXIgKi8KK2ZzCW1vdncgICAgJWF4LCAoJWVzaSkKKyAgICAgICAgam1wICAgICBuZXh0YmFuaworCitjbGVhbnVwOiAKKyAgICAgICAgbW92bCAgICAkRFJDQkVOREFEUiwgJWVkaSAgICAgICAgLyogRFJBTSBlbmRpbmcgYWRkcmVzcyByZWdpc3RlciAgKi8KKyAgICAgICAgbW92dyAgICAkNCwlY3gKKyAgICAgICAgeG9ydyAgICAlYXgsJWF4CitjbGVhbnVwbHA6IAorZnMJbW92YiAgICglZWRpKSwgJWFsCisgICAgICAgIG9yYiAgICAgJWFsLCVhbAorICAgICAgICBqeiAgICAgIGVtcHR5YmFuaworCisgICAgICAgIGFkZGIgICAgJWFoLCVhbAorICAgICAgICBqbnMgICAgIG5vdHRvb211Y2gKKworICAgICAgICBtb3ZiICAgICQweDdmLCVhbAorbm90dG9vbXVjaDogCisgICAgICAgIG1vdmIgICAgJWFsLCVhaAorICAgICAgICBvcmIgICAgICQweDgwLCVhbAorZnMJbW92YiAgICAlYWwsICglZWRpKQorZW1wdHliYW5rOiAKKyAgICAgICAgaW5jbCAgICAlZWRpCisgICAgICAgIGxvb3AgICAgY2xlYW51cGxwCisKKyNpZiBkZWZpbmVkKENGR19TRFJBTV9DQVNfTEFURU5DWV8yVCkgfHwgZGVmaW5lZChDRkdfU0RSQU1fQ0FTX0xBVEVOQ1lfM1QpCisJLyogc2V0IHRoZSBDQVMgbGF0ZW5jeSBub3cgc2luY2UgaXQgaXMgaGFyZCB0byBkbworCSAqIHdoZW4gd2UgcnVuIGZyb20gdGhlIFJBTSAqLworCW1vdmwgICAgJERSQ1RNQ1RMLCAlZWRpICAgICAgICAgIC8qIERSQU0gdGltaW5nIHJlZ2lzdGVyICovCisJbW92YiAgICAoJWVkaSksICVhbAkKKyNpZmRlZiBDRkdfU0RSQU1fQ0FTX0xBVEVOQ1lfMlQKKwlhbmRiICAgICQweGVmLCAlYWwKKyNlbmRpZgorI2lmZGVmIENGR19TRFJBTV9DQVNfTEFURU5DWV8zVAorCW9yYiAgICAgJDB4MTAsICVhbAorI2VuZGlmCSAKKwltb3ZiICAgICVhbCwgKCVlZGkpCisjZW5kaWYKKyAgICAgICAgbW92bCAgICAkRFJDQ1RMLCAlZWRpICAgICAgICAgICAgLyogRFJBTSBDb250cm9sIHJlZ2lzdGVyICovCisgICAgICAgIG1vdmIgICAgJDB4MywlYWwgICAgICAgICAgICAgICAgIC8qIExvYWQgbW9kZSByZWdpc3RlciBjbWQgKi8KK2ZzCW1vdmIgICAgICVhbCwgKCVlZGkpCitmcwltb3Z3ICAgICAlYXgsICglZXNpKQorCisKKyAgICAgICAgbW92bCAgICAkRFJDQ1RMLCAlZWRpICAgICAgICAgICAgLyogRFJBTSBDb250cm9sIHJlZ2lzdGVyICovCisgICAgICAgIG1vdmIgICAgJDB4MTgsJWFsICAgICAgICAgICAgICAgIC8qICBFbmFibGUgcmVmcmVzaCBhbmQgTk9STUFMIG1vZGUgKi8KK2ZzCW1vdmIgICAgJWFsLCAoJWVkaSkKKworICAgICAgICBqbXAgICAgIGRyYW1fZG9uZQorCitiYWRfcmFtOiAKKyAgICAgICAgeG9ybCAgICAlZWR4LCVlZHgKKyAgICAgICAgeG9ybCAgICAlZWRpLCVlZGkKKyAgICAgICAgam1wICAgICBiYWRfcmVpbnQKKworZHJhbV9kb25lOiAKKwkKKwkvKiByZWFkYmFjayBEUkNCRU5EQURSIGFuZCByZXR1cm4gdGhlIG51bWJlcgorCSAqIG9mIGF2YWlsYWJsZSByYW0gYnl0ZXMgaW4gJWVheCAqLyAKKworICAgICAgICBtb3ZsICAgICREUkNCRU5EQURSLCAlZWRpICAgICAgICAvKiBEUkFNIGVuZGluZyBhZGRyZXNzIHJlZ2lzdGVyICAqLworCQorCW1vdmwJKCVlZGkpLCAlZWF4CisJbW92bAklZWF4LCAlZWN4CisJYW5kbAkkMHg4MDAwMDAwMCwgJWVjeAorCWp6CWJhbmsyCisJYW5kbAkkMHg3ZjAwMDAwMCwgJWVheAorCXNocmwJJDIsICVlYXggCisJbW92bAklZWF4LCAlZWJ4CisKK2JhbmsyOiAJbW92bAkoJWVkaSksICVlYXgKKwltb3ZsCSVlYXgsICVlY3gKKwlhbmRsCSQweDAwODAwMDAwLCAlZWN4CisJanoJYmFuazEKKwlhbmRsCSQweDAwN2YwMDAwLCAlZWF4CisJc2hsbAkkNiwgJWVheCAKKwltb3ZsCSVlYXgsICVlYngKKworYmFuazE6IAltb3ZsCSglZWRpKSwgJWVheAorCW1vdmwJJWVheCwgJWVjeAorCWFuZGwJJDB4MDAwMDgwMDAsICVlY3gKKwlqegliYW5rMAorCWFuZGwJJDB4MDAwMDdmMDAsICVlYXgKKwlzaGxsCSQxNCwgJWVheCAKKwltb3ZsCSVlYXgsICVlYngKKworYmFuazA6IAltb3ZsCSglZWRpKSwgJWVheAorCW1vdmwJJWVheCwgJWVjeAorCWFuZGwJJDB4MDAwMDAwODAsICVlY3gKKwlqeglkb25lCisJYW5kbAkkMHgwMDAwMDA3ZiwgJWVheAorCXNobGwJJDIyLCAlZWF4IAorCW1vdmwJJWVheCwgJWVieAorCitkb25lOgltb3ZsCSVlYngsICVlYXgKKworCWptcAkqJWVicAo=